import WebFeatureSource from "../../src/data/source/web/WebFeatureSource";
import GeoJsonSource from "../../src/data/source/vector/GeoJsonSource";
import {SourceEventType} from "../../src/event/EventType";
import CsvSource from "../../src/data/source/vector/CsvSource";

function test_source(earth){
    /**
     * 测试GeoJSON数据源
     */
    //test_geojson_source(earth);

    /**
     * 测试WFS数据源
     */
    //test_wfs_source(earth);

    /**
     * 测试CSV数据源
     */
    test_csv_source(earth);
}


function test_csv_source(earth){
    let url = "/resource/csv/cities.csv";
    let source = new CsvSource("csv", {
        url: url, 
        header : true,
        fields :  {
            x : "X",
            y : "Y"
        }
    });

    /***
     * 触发数据获取成功的FETCHED事件，做事件的后续处理
     */
    source.on(SourceEventType.FETCHED, function(evt){
        let json = evt.json;
        alert(json.type);
        alert("[Feature Count]:  " + json.features.length);
    })

    /***
     * 触发数据获取失败的FETCH_ERROR事件，做事件的后续处理
     */
    source.on(SourceEventType.FETCH_ERROR, function(evt){
        alert(evt.message);
    });

    source.fetch();
}


/**
 * 2023年3月2日14:30:19
 * @param {} earth 
 */
function test_geojson_source(earth){

    //let url = "/resource/json/cities.json";
    
    let source = new GeoJsonSource("xxx", {
        url : "/resource/json/cities.json"
    })

    /***
     * 触发数据获取成功的FETCHED事件，做事件的后续处理
     */
    source.on(SourceEventType.FETCHED, function(evt){
        let json = evt.json;
        alert(json.type);
        alert("[Feature Count]:  " + json.features.length);
    })

    /***
     * 触发数据获取失败的FETCH_ERROR事件，做事件的后续处理
     */
    source.on(SourceEventType.FETCH_ERROR, function(evt){
        alert(evt.message);
    });

    source.fetch();
}

/**
 * 2023年2月22日08:47:42
 */
function test_wfs_source(earth){
 
    let typeName = "radi:country";
    let filter = create_filter();
    let query = create_query();
    //source.query(typeName, query);

    let source = new WebFeatureSource("xxx", {
        url : "/geoserver/ows",
        typeName : "radi:country",
        fields : ["NAME", "CAPITAL"],
        filter : filter
    })

    /***
     * 触发数据获取成功的FETCHED事件，做事件的后续处理
     */
    source.on(SourceEventType.FETCHED, function(evt){
        let json = evt.json;
        alert(json.type);
        alert("[Feature Count]:  " + json.features.length);
    })

    /***
     * 触发数据获取失败的FETCH_ERROR事件，做事件的后续处理
     */
    source.on(SourceEventType.FETCH_ERROR, function(evt){
        alert(evt.message);
    });

    source.fetch();

    // source.fetch({
    //     typeName,
    //     query
    // });
}


function create_filter(){
    return undefined;
}

export {
    test_source
}